#include <iostream>
#include <string>
#include <jsoncpp/json/json.h>
using namespace std;
// using namespace Json;

int main()
{
    // Json::Value 万能类型
    Json::Value root;
    root["a"] = 10;
    root["b"] = 20;
    root["哈哈哈"] = "嘎嘎嘎";

    Json::Value tmp;
    tmp["who"] = "cr";
    tmp["age"] = 20;
    root["id"] = tmp;

    // Json::FastWriter writer;//行式风格序列化
    Json::StyledWriter writer;     // 样式风格序列化
    string s = writer.write(root); // 将root结构化字段进行序列化操作
    cout << s << endl;

    cout << "-------------------------------------" << endl;

    // 反序列化
    Json::Value rets;
    Json::Reader reader;
    bool ret = reader.parse(s, root); // 调用反序列化方法，将序列化的数据s反序列到root里
    if (ret)                          // 解析root
    {
        int a = root["a"].asInt();
        int b = root["b"].asInt();
        string st = root["哈哈哈"].asString();
        tmp = root["id"];
        cout << a << ' ' << b << ' ' << st << ' ' << tmp << endl;
    }
}